package com.example.leetcode.leetcode;

/**
 * @author zht
 * @date 2021/1/12 11:27
 */
public class Solution98 {
    // DFS
    public static boolean isValidBST(TreeNode root) {
        return judge(root,null,null);
    }
    public static boolean judge(TreeNode root,Integer min, Integer max){
        if (null == root){
            return true;
        }
        if(null != min&& root.val<=min){
            return false;
        }
        if(null!=max&& root.val>=max){
            return false;
        }
        //判断左子树，最小值为根节点，最大值为父节点
        if(!judge(root.left,min,root.val)){
            return false;
        }
        //判断右子树，最小值为根节点，最大值为根节点
        if(!judge(root.right,root.val,max)){
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        /**
         *     4
         *    / \
         *   1   8
         *      / \
         *     7   9
         *        / \
         *       10   9
         * */
    }
}
